package 我的Java学习_算法基础.day_05;

public class _072_替换字符串中的空格 {
    public static void main(String[] args) {
        String s = "Mr John Smith1111111111111111111";
        String n = replaceSpace(s,13);
        System.out.println(n);
    }
    static String replace(String s,int length){
        return s.replaceAll("\\s","%20");
    }
    //Java中字符串长度固定，字符后面加了很多1，模拟字符串有足够空间
    static String replaceSpace(String s,int length){
        char[] arr = s.toCharArray();
        int count = length;
        for(int i =0;i< length;i++){//有效字符间统计空格个数
            if(arr[i]==' '){
                count+=2;
            }
        }
        int left = length-1;    //指针指在最后一个有效字符
        int right = count -1;   //用%20取代空格多出空间后最后一个字符
        while(left>=0){ //left从右向左扫描
            if(arr[left]==' '){
                arr[right--]='0';
                arr[right--]='2';
                arr[right--]='%';
            }else{
                arr[right--]=arr[left];
            }
            left--;
        }
        return new String(arr,0,count); //截取字符数组区间创建字符串
    }
}
